package vwg.na.vwm.rh.motorsdk.modelo.procesos.servicios;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Transient;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

import vwg.na.vwm.rh.motorsdk.commons.entidades.EstructuraEmpresa;
import vwg.na.vwm.rh.motorsdk.commons.entidades.Persona;
import vwg.na.vwm.rh.motorsdk.modelo.procesos.IdeaProceso;

@Entity
@Table(name = "ide_participante")
public class IdeParticipante implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long idParticipante;
    private Persona persona;
    private boolean titular;
    private Float porcentaje;
    private IdeaProceso ideaProceso;
    private String ubicacion;

    private String area;
    private String centroCostos;
    private String celular;
    private String extension;
    private String curp;
    private String email;
    private String subDivicion;

    public IdeParticipante() {
	persona = new Persona();
    }

    public IdeParticipante(EstructuraEmpresa estructuraEmpresa,
	    boolean titular, Float porcentaje, String ubicacion) {
	persona = estructuraEmpresa.getPersona();
	this.titular = titular;
	this.porcentaje = porcentaje;
	this.ubicacion = ubicacion;
	this.centroCostos = estructuraEmpresa.getCentroCoste().getCentroCosteDescripcion();
	this.area = estructuraEmpresa.getCentroCoste().getSubArea().getArea().getAreaDescripcion();
    }

    public void setIdParticipante(Long idparticipante) {
	this.idParticipante = idparticipante;
    }

    @Id
    @Column
    public Long getIdParticipante() {
	return this.idParticipante;
    }

    public void setPersona(Persona persona) {
	this.persona = persona;
    }

    @OneToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "persona")    
    public Persona getPersona() {
	return this.persona;
    }

    public void setTitular(boolean titular) {
	this.titular = titular;
    }

    @Column
    public boolean isTitular() {
	return this.titular;
    }

    public void setPorcentaje(Float porcentaje) {
	this.porcentaje = porcentaje;
    }

    @Column
    public Float getPorcentaje() {
	return this.porcentaje;
    }

    @Column
    public String getUbicacion() {
	return ubicacion;
    }

    public void setUbicacion(String ubicacion) {
	this.ubicacion = ubicacion;
    }

    public void setIdeaProceso(IdeaProceso ideaproceso) {
	this.ideaProceso = ideaproceso;
    }

    @LazyCollection(LazyCollectionOption.TRUE)
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "idIdeaProceso")
    public IdeaProceso getIdeaProceso() {
	return this.ideaProceso;
    }
    
    @Transient
    public String getArea() {
	return area;
    }

    public void setArea(String area) {
	this.area = area;
    }

    @Transient
    public String getCentroCostos() {
	return centroCostos;
    }

    public void setCentroCostos(String centroCostos) {
	this.centroCostos = centroCostos;
    }

    @Transient
    public String getCelular() {
	return celular;
    }

    public void setCelular(String celular) {
	this.celular = celular;
    }

    @Transient
    public String getCurp() {
	return curp;
    }

    public void setCurp(String curp) {
	this.curp = curp;
    }

    @Transient
    public String getEmail() {
	return email;
    }

    public void setEmail(String email) {
	this.email = email;
    }

    @Transient
    public String getSubDivicion() {
	return subDivicion;
    }

    public void setSubDivicion(String subDivicion) {
	this.subDivicion = subDivicion;
    }

    @Transient
    public String getExtension() {
        return extension;
    }

    public void setExtension(String extension) {
        this.extension = extension;
    }
    
    

}
